/*
 * PagLogin.java
 * 
 * Projeto: Kruskal - SRAC
 * LEDS - Laboratório de Engenharia e Desenvolvimento de Software
 * IFES - Instituto Federal do Espírito Santo - Campus Serra.
 */
package srac.controleatividades.cih;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.ClientInfoEvent;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.Label;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;
import srac.controleatividades.cci.CtrlPrincipal;
import srac.controleatividades.cdp.Aluno;
import srac.controleatividades.cdp.Funcionario;
import srac.controleatividades.cdp.TipoUsuario;
import srac.controleatividades.cdp.Usuario;

public class PagLogin extends GenericForwardComposer {

    private Window loginWin;
    private Textbox nome;
    private Textbox senha;
    private Label msg;
    private Checkbox checkbox;
    private CtrlPrincipal ctrl = CtrlPrincipal.getInstance();

    public void onCreate$loginWin(Event event) {
        //se ja existir um usuario logado ele eh direcionado para a pagina principal
        if (Executions.getCurrent().getSession().getAttribute("usuario") != null) {
            CtrlPrincipal.getInstance().abrirPaginaPrincipal();
            loginWin.detach();
        }

        Cookie[] c = ((HttpServletRequest) Executions.getCurrent().getNativeRequest()).getCookies();

        for (int i = 0; c != null && i < c.length; i++) {
            if (c[i].getName().equals("loginKruskal")) {
                nome.setText(c[i].getValue());
                if (!nome.getText().equals("")) {
                    checkbox.setChecked(true);
                } else {
                    checkbox.setChecked(false);
                }
            } else if (c[i].getName().equals("senhaKruskal")) {
                senha.setText(c[i].getValue());
            }
        }
    }

    public void onClientInfo$loginWin(ClientInfoEvent event) {
        loginWin.setHeight(event.getDesktopHeight() + "px");
        loginWin.setWidth(event.getDesktopWidth() + "px");
    }

    public void onOK$loginWin(Event event) {
        onClick$entrar(event);
    
    }
    
    public void onClick$cadastro (Event event)
    {
        ctrl.abrirPaginaCadastro();
    }

    public void onClick$entrar(Event event) {
        Usuario usuario = null;

        usuario = ctrl.login(nome.getValue(), senha.getValue());

        if (usuario != null) {
            msg.setValue("");

            //colocando o objeto usuario na session
            Executions.getCurrent().getSession().setAttribute("usuario", usuario);

            //verificando o tipo de usuario e adicionando o respectivo objeto na session
            if (usuario.getTipo() == TipoUsuario.ALUNO) {
                Aluno aluno = (Aluno) ctrl.obterAluno(usuario);
                Executions.getCurrent().getSession().setAttribute("aluno", aluno);
            } else if (usuario.getTipo() != TipoUsuario.ADMINISTRADOR) {
                Funcionario funcionario = (Funcionario) ctrl.obterFuncionario(usuario);
                Executions.getCurrent().getSession().setAttribute("funcionario", funcionario);
            }

            CtrlPrincipal.getInstance().abrirPaginaPrincipal();

            loginWin.detach();
        } else {
            msg.setValue("Usuário ou Senha inválida!");
        }

        if (checkbox.isChecked()) {
            ((HttpServletResponse) Executions.getCurrent().getNativeResponse()).addCookie(new Cookie("loginKruskal", nome.getText()));
            ((HttpServletResponse) Executions.getCurrent().getNativeResponse()).addCookie(new Cookie("senhaKruskal", senha.getText()));
        } else {
            Cookie[] c = ((HttpServletRequest) Executions.getCurrent().getNativeRequest()).getCookies();

            for (int i = 0; c != null && i < c.length; i++) {
                if (c[i].getName().equals("loginKruskal")) {
                    ((HttpServletResponse) Executions.getCurrent().getNativeResponse()).addCookie(new Cookie("loginKruskal", ""));
                } else if (c[i].getName().equals("senhaKruskal")) {
                    ((HttpServletResponse) Executions.getCurrent().getNativeResponse()).addCookie(new Cookie("senhaKruskal", ""));
                }
            }
        }
    }
}